<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>2.class声明类的语法</title>
</head>

<body>
  <script>
    // 两种声明类的形式
    class User { }
    console.log(typeof User); // function 
    let HD = class { };
    console.log(HD); // class {}


    // 类内部的属性和方法
    class User2 {
      show () { }
      get () {
        console.log('houdunren');
      }
    }
    let hd = new User2();
    hd.get();//houdunren

    //class 声明 对比函数声明
    function Article(title){ 
      this.title = title;
    }
    let article = new Article('article1');
    console.log(article.title);
    class Article2{
      //构造函数用于传递对象的初始参数，但不是必须定义的，如果不设置系统会设置如下类型

      //- 子构造器中调用完super 后才可以使用 this
      //    - 至于 super 的概念会在后面讲到

      constructor(name){
        this.name = name;
      }

      getName(){
        return this.name;
      }
    };
    let article2 = new Article2('article2');
    console.log(article2.getName());
  </script>
</body>

</html>